﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BatallaNavalgo
{
    public class Destructor: Nave
    {
        public Destructor(int[] posicionInicial, int[] direccion, int orientacion, Tablero tablero) /*orientacion = 1 para naves horizontales, = 0 para naves verticales*/
        {
            if (posicionInicial.Length != 2 | direccion.Length != 2 | (orientacion == 1 & posicionInicial[1] > 7) | (orientacion == 0 & posicionInicial[0] > 7))
                throw new NoSePudoInicializarNaveException();
            this.fragmentos = new FragmentoDeNave[3];
            this.resistencia = 1;
            this.direccion = new int[2];
            Array.Copy(direccion, this.direccion, 2);
            int[] posicion = new int[2];
            Array.Copy(posicionInicial, posicion, 2);
            for (int i = 0; i < 3; i++)
            {
                this.fragmentos[i] = new FragmentoDeNave(posicion, resistencia,this);
                posicion[orientacion] += 1;
            }
            this.tablero = tablero;
        }

        /**************************************************************************/
        public override void ChequearImpactos()
        {
            for (int i = 0; i < this.Fragmentos.Length; i++)
            {
                Tuple<int, int> posicion = new Tuple<int, int>(this.fragmentos[i].Posicion[0], this.fragmentos[i].Posicion[1]);
                foreach (Disparo disparo in this.tablero.GetCasilla(posicion).Disparos)
                    disparo.Impactar(this, this.fragmentos[i]);
            }
        }

        public override int GetCodigo()
        {
            return 1;
        }
    }
}
